'''
自定义with语句：

要求1：最终代码效果可以使用with TcpSocket("s", "192.168.126.178", 8080) as socket:语句获取套接字socket；

要求2：TcpSocket类中：第一个参数如果是"s"，创建服务端套接字，"192.168.126.178", 8080分别为要绑定的IP和端口号；第一个参数如果是"c"，则创建客户端套接字，"192.168.126.178", 8080分别为要连接的服务端的IP和端口号；

要求3：如果创建服务端套接字，上下文中能自动绑定IP和端口号，且处于监听状态；

要求4：如果创建客户端套接字，上下文中能自动连接到目标服务端
'''
import socket


class TcpSocket(object):
    def __init__(self, socket_type, socket_ip, socket_port):
        self.socket_type = socket_type
        self.socket_ip = socket_ip
        self.socket_port = socket_port


    def __enter__(self):
        self.tcp_socket = socket.socket()
        if self.socket_type == "s":
            self.tcp_socket.bind(("",self.socket_port))
            self.tcp_socket.listen(128)
        elif self.socket_type == "c":
            self.tcp_socket.connect((self.socket_ip,self.socket_port))

        return self.tcp_socket

    def __exit__(self, exc_type, exc_val, exc_tb):
        self.tcp_socket.close()

if __name__ == '__main__':
    with TcpSocket("s", "192.168.126.178", 8080) as socket:
        pass

